# -*- encoding: utf-8 -*-

from django.db import models
from django.contrib.auth.models import User
import datetime

# Create your models here.


class Cliente(models.Model):
    id_cliente = models.CharField(u'Código Cliente', primary_key = True, max_length = 5)
    nombre = models.CharField(u'Nombre', max_length = 20)
    apellidos = models.CharField(u'Apellidos', max_length = 50)
    dni = models.CharField(u'DNI', max_length = 9)
    
    def __unicode__(self):
        return u"%s %s [%s]" % (self.nombre, self.apellidos, self.dni)
		
    class Meta:
	verbose_name = "Cliente"
	verbose_name_plural = "Clientes"


class Bloque(models.Model):
    id_bloque = models.CharField(u'Código de bloque', primary_key = True, max_length = 5)
    #?fecha = models.DateField(u'Fecha de Entrada', auto_now = False, auto_now_add = False)   --->Puede venir de recepcion
    cliente = models.ForeignKey(u'Cliente')
    calidad = models.ForeignKey(u'CalidadBloque')
    peso = models.DecimalField(u'Peso', max_digits =  5, decimal_places = 2)
    lote = models.ForeignKey(u'Lote', verbose_name = u'Lote', null = True, blank = True)
    bloque_origen = models.ForeignKey(u'Bloque', null = True, blank = True)
    albaran = models.ForeignKey(u'AlbaranRecepcion', verbose_name = u'Albaran')

    def __unicode__(self):
        return u"%s :: %d :: %s" % (self.id_bloque, self.peso, self.calidad)
	
    class Meta:
        verbose_name = "Bloque de cera"
	verbose_name_plural = "Bloques de cera"


class CalidadBloque(models.Model):
    id_calidad = models.CharField(u'Calidad', max_length = 15, primary_key = True)
    color = models.CharField(u'Color', max_length = 15)
    procedencia = models.CharField(u'Procedencia', max_length = 50)
    merma = models.DecimalField(u'Merma', max_digits = 4, decimal_places = 2)
	
    def __unicode__(self):
        return u"%s" % (self.id_calidad)
		
    class Meta:
	verbose_name = "Calidad bloque"
	verbose_name_plural = "Calidades bloque"


class EventoBloque(models.Model):
    fecha = models.DateField(u'Fecha', auto_now= False, auto_now_add = False)
    descripcion = models.CharField(u'Descripción', max_length = 500)
    bloque = models.ForeignKey(u'Bloque', verbose_name = u'Bloque')
	
    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.bloque, self.fecha, self.descripcion)
		
    class Meta:
	verbose_name = "Evento bloque"
	verbose_name_plural = "Eventos bloque"


class AnalisisBloque(models.Model):
    fecha = models.DateField(u'Fecha', auto_now = False, auto_now_add = False)
    descripcion = models.CharField(u'Descripción', max_length = 500)
    bloque = models.ForeignKey(u'Bloque', verbose_name = u'Bloque')
	
    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.bloque, self.fecha, self.descripcion)
		
    class Meta:
	verbose_name = "Analisis bloque"
	verbose_name_plural = "Analisis bloque"


class LineaAnalisisBloque(models.Model):
    descripcion = models.CharField(u'Descripción', max_length = 500)
    valor = models.CharField(u'Valor', max_length = 5)
    valor_recomendado = models.CharField(u'Valor Recomendado', max_length = 5)
    analisis = models.ForeignKey(u'AnalisisBloque', verbose_name = u'Analisis')
	
    def __unicode__(self):
        return u"%s :: %s :: %s :: %s" % (self.analisis, self.descripcion, self.valor_recomendado, self.valor)
		
    class Meta:
	verbose_name = "Lineas analisis bloque"
	verbose_name_plural = "Lineas analisis bloque"


class Lote(models.Model):
    estado_choices = (('A','Abierto'),
                      ('C','Completo'),
                      ('F','Fundido'),
                      ('E','Envasado'),)
    
    id_lote = models.AutoField(u'Código de Lote', primary_key = True)
    etiqueta_lote = models.CharField(u'Lote', max_length = 10, null = True, blank = True)
    fecha = models.DateField(u'Fecha de fundido', auto_now = False, auto_now_add = False, null = True, blank = True)
    peso_bruto = models.DecimalField(u'Peso en Bruto', max_digits = 5, decimal_places = 2, null = True, blank = True)   #--->Debe ser la suma del peso de los bloques que contiene
    peso_neto = models.DecimalField(u'Peso Neto', max_digits = 5, decimal_places = 2, null = True, blank = True)
    estado = models.CharField(u'Estado', max_length = 20, choices = estado_choices)
	
    def __unicode__(self):
        return u"%s :: %s :: %s :: %s :: %s ::%s" % (self.id_lote, self.etiqueta_lote, self.fecha, str(self.peso_bruto), str(self.peso_neto), self.estado)
		
    class Meta:
	verbose_name = "Lote"
	verbose_name_plural = "Lotes"


class EventoLote(models.Model):
    fecha = models.DateField(u'Fecha de Evento', auto_now = False, auto_now_add = False)
    descripcion = models.CharField(u'Descripción', max_length = 500)
    lote = models.ForeignKey(u'Lote', verbose_name = 'Código lote')
	
    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.lote, self.fecha, self.descripcion)
		
    class Meta:
	verbose_name = "Evento Lote"
	verbose_name_plural = "Eventos Lote"


class AnalisisLote(models.Model):
    fecha = models.DateField(u'Fecha', auto_now = False, auto_now_add = False)
    descripcion = models.CharField(u'Descripción', max_length = 500)
    lote = models.ForeignKey(u'Lote', verbose_name = u'Lote')
	
    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.lote, self.fecha, self.descripcion)
		
    class Meta:
	verbose_name = "Analisis lote"
	verbose_name_plural = "Analisis lote"


class LineaAnalisisLote(models.Model):
    descripcion = models.CharField(u'Descripción', max_length = 500)
    valor = models.CharField(u'Valor', max_length = 5)
    valor_recomendado = models.CharField(u'Valor Recomendado', max_length = 5)
    analisis = models.ForeignKey(u'AnalisisLote', verbose_name = u'Analisis')
	
    def __unicode__(self):
        return u"%s :: %s :: %s :: %s" % (self.analisis, self.descripcion, self.valor_recomendado, self.valor)
		
    class Meta:
	verbose_name = "Lineas analisis lote"
	verbose_name_plural = "Lineas analisis lote"


class CeraSalida(models.Model):
    formato_choices = (('LY','Layens'),
                       ('LTh','Langstroth'),
                       ('DT','Dadant'),
                       ('1/2DT','Alza Dadant'),
                       ('1/2LY','Alza Layens'),
                       ('OTR','Otras'),)

    estado_choices = (('A','Almacen'),
                      ('V','Vendida'))
    
    fecha_envasado = models.DateField(u'Fecha de envasado', auto_now = False, auto_now_add = False)
    formato = models.CharField(u'Formato', max_length = 20, choices = formato_choices)
    peso = models.DecimalField(u'Peso', max_digits = 5, decimal_places = 2)
    lote = models.ForeignKey(u'Lote', verbose_name = 'Lote')
    etiqueta = models.CharField(u'Etiqueta', max_length = 15) #---> Revisar la manera de hacer las etiquetas automaticas
    estado = models.CharField(u'Estado', max_length = 20, choices = estado_choices)
    albaran = models.ForeignKey(u'AlbaranExpedicion', verbose_name = 'Albaran')
	
    def __unicode__(self):
        return u"%s :: %d :: %s :: %s" % (self.formato, self.peso, self.fecha_envasado, self.id_lote)
		
    class Meta:
	verbose_name = "Cera Salida"
	verbose_name_plural = "Ceras Salida"


class AlbaranRecepcion(models.Model):
    albaran = models.CharField(u'Num. Albaran', primary_key = True, max_length = 15, blank = True, null = True) #Pendiente de saber como generarlo
    cliente = models.ForeignKey(u'Cliente', verbose_name = u'Cliente')
    fecha = models.DateField(u'Fecha Albaran', auto_now = False, auto_now_add = False)

    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.num_albaran, self.cliente, self.fecha)

    class Meta:
	verbose_name = "Albaran Recepcion"
	verbose_name_plural = "Albaranes Recepcion"


class AlbaranExpedicion(models.Model):
    albaran = models.CharField(u'Num. Albaran', primary_key = True, max_length = 15, blank = True, null = True) #Pendiente de saber como generarlo
    cliente = models.ForeignKey(u'Cliente', verbose_name = u'Cliente')
    fecha = models.DateField(u'Fecha Albaran', auto_now = False, auto_now_add = False)
	
    def __unicode__(self):
        return u"%s :: %s :: %s" % (self.num_albaran, self.cliente, self.fecha)
		
    class Meta:
	verbose_name = "Albaran Expedicion"
	verbose_name_plural = "Albaranes Expedicion"

#En los lotes hay que incluir dos listas 1 con bloques disponibles y otra con los que hay en el lote para pasar d una a otra
#En los lotes se podran crear las ceras de salida
